package br.com.sms.facade;

import java.util.List;
import java.util.Set;

import br.com.sms.dao.DestinatarioDAO;
import br.com.sms.dominio.Cidade;
import br.com.sms.dominio.Destinatario;
import br.com.sms.dominio.MalaDireta;
import br.com.sms.dto.DestinatarioDTO;
import br.com.sms.enuns.UF;
import br.com.sms.excecao.SmsException;
import br.com.sms.util.MensagensErro;
import br.com.sms.util.Util;

public class DestinatarioFacade {

	private DestinatarioDAO dao;
	
	public DestinatarioFacade(){
		this.dao = new DestinatarioDAO();
	}
	
	public Destinatario salvar(Destinatario dest) {
		return dao.salvar(dest);
	}

	public void validaCamposMalaDireta(UF uf, Cidade cidade,
			String nomeDest) throws SmsException {
		
		if((uf == null) && (cidade == null || cidade.getId() == 0) && (nomeDest == null || nomeDest.trim().length() == 0)){
			String mensagem = MensagensErro.SELECIONE_UF_CIDADE_NOME;
			throw new SmsException(mensagem);
		}
		
		if(uf != null && cidade.getId() == 0 && (nomeDest == null || nomeDest.trim().length() == 0)){
			String mensagem = MensagensErro.CAMPO_OBRIGATORIO.replace("?", "Cidade");
			throw new SmsException(mensagem);
		}
		
	}

	public Set<Destinatario> recuperarDestinatarios(DestinatarioDTO destinatarioDTO) {
		return dao.recuperarDestinatarios(destinatarioDTO);
	}
	
	public Set<Destinatario> recuperarDestinatarios(String nome, Cidade cidade) {
		return dao.recuperarDestinatarios(cidade, nome);
	}
	
	public List<Destinatario> recuperarDestinatarios(UF uf, Cidade cidade, String cep) {
		return dao.recuperarDestinatarios(uf, cidade, cep);
	}

	public List<Destinatario> recuperarDestinatarios(UF uf){
		return dao.recuperarDestinatarios(uf);
	}
	
	public Set<Destinatario> recuperarDestinatarios(Set<Integer> ids){
		return dao.recuperarDestinatarios(ids);
	}
	
	public Set<Destinatario> recuperarDestinatarios(MalaDireta malaDireta){
		return dao.recuperarDestinatarios(malaDireta);
	}

	public List<Destinatario> pesquisar(DestinatarioDTO dto) {
		Destinatario dest = dto.getDestinatario();
		
		StringBuffer whereClause = new StringBuffer();
		
		if(Util.isPreenchido(dest.getNome())){
			whereClause.append("d.ds_destinatario = "+ dest.getNome());
		}
		if(Util.isPreenchido(dest.getEmail())){
			whereClause.append(dest.getEmail());
		}
		if(Util.isPreenchido(dest.getCep())){
			whereClause.append(dest.getCep());
		}
		if(Util.isPreenchido(dest.getEmpresa())){
			whereClause.append(dest.getEmpresa());
		}
		
		//DTO
		if(Util.isPreenchido(dto.getTelefone())){
			whereClause.append(dto.getTelefone());
		}
		if(Util.isPreenchido(dto.getCelular())){
			whereClause.append(dto.getCelular());
		}
		if(Util.isPreenchido(dto.getCidade())){
			whereClause.append(dto.getCidade());
		}
		
		return dao.pesquisar(whereClause);
	}

	public void excluir(Destinatario destinatario) {
		dao.excluir(destinatario);
	}

	public Destinatario recuperarDestinatario(int id) {
		return dao.recuperarDestinatario(id);
	}
}










